home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
MPW_TOOL
/
TOOLS
/
TOOLS_WI
/
ICON_8
/
TESTS
/
VERSION7.ICN
< prev
next >
Wrap
Text File
|
1990-03-02
|
6KB
|
209 lines
procedure main ()
write(&host)
write(&version)
write("&line=",&line)
write("&file=",&file)
write("&error=",&error)
every write(&features)
# show results of bitwise operations on various operand combinations
every i := 1 | '2' | "3" do {
write (
" i j ~j i & j i | j i ^ j i << j i >> j")
every j := 0 | 1 | 2 | 3 | 4 | 100 do {
write(right(i,8), right(j,9))
word (i)
word (j)
word (icom (j))
word (iand (i, j))
word (ior (i, j))
word (ixor (i, j))
word (ishift (i, j))
word (ishift (i, -j))
write ()
}
}
# test remove() and rename(), and print errors in case of malfunction
name1 := "temp1"
name2 := "temp2"
data := "Here's the data"
every remove (name1 | name2) # just in case
open (name1) & stop ("can't remove ", name1, " to initialize test")
open (name2) & stop ("can't remove ", name2, " to initialize test")
remove (name1) & stop ("successfully removed nonexistent file")
rename (name1, name2) & stop ("successfully renamed nonexistent file")
f := open (name1, "w") | stop ("can't open ",name1," for write")
write (f, data)
close (f)
f := open (name1) | stop ("can't open ",name1," after write")
s := read (f) | ""
close(f)
s == data | stop ("data lost after write")
rename (name1, name2) | stop ("can't rename(",name1,",",name2,")")
f := open (name2) | stop ("can't open ",name2," after rename")
s := read (f) | ""
close(f)
s == data | stop ("data lost after rename")
remove (name1) & stop ("remove succeeded on file already renamed")
remove (name2) | stop ("can't remove renamed file")
open (name1) & stop (name1, " still around at end of test")
open (name2) & stop (name2, " still around at end of test")
# test seek() and where()
f := open("concord.dat")
write(image(seek(f,11)))
write(where(f))
write(image(reads(f,10)))
write(where(f))
write(where(f))
seek(f,-2)
write(where(f))
write(image(reads(f,1)))
write(where(f))
# test ord() and char(), and print messages if wrong results
s := string (&cset)
every i := 0 to 255 do {
c := char (i)
n := ord (c)
if n ~= i | c ~== s[i+1] then
write ("oops -- ord/char failure at ",i)
}
if char("47") ~== char(47) then
write ("oops -- type conversion failed in char()")
if ord(9) ~= ord("9") then
write ("oops -- type conversion failed in ord()")
every ferr (char, -65536 | -337 | -1 | 256 | 4713 | 65536 | 123456, 205)
every ferr (char, "abc" | &lcase | &errout | [], 101)
every ferr (ord, "" | "ab" | "antidisestablishmentarianism" | 47, 205)
every ferr (ord, &output | table(), 103)
# test getenv()
write(getenv("HOME") | write("getenv failed"))
write(getenv("foo") | write("getenv failed"))
# test sorting
a := list(1) # different sizes to make identification easy
b := list(2)
c := list(3)
d := list(4)
e := &lcase ++ &ucase
f := &lcase ++ &ucase
g := '123456789'
h := &digits
A := sort([h,g,a,c,b,d,f,e,&lcase,[],&cset,&ascii])
every write(image(!A))
# test varargs
write("p(1):")
p(1)
write("p(1, 2):")
p(1, 2)
write("p(1, 2, 3):")
p(1, 2, 3)
write("p(1, 2, 3, 4, 5):")
p(1, 2, 3, 4, 5)
write("q(1, 2):")
q(1, 2)
# test Version 7 table features
write("t := table(\"default\") --> ", image(t := table("default")) |
"failure")
show(t)
write("insert(t, 3, 4) --> ", image(insert(t, 3, 4)) | "failure")
write("insert(t, \"xyz\", \"abc\") --> ", image(insert(t, "xyz", "abc")) |
"failure")
write("insert(t, &digits) --> ", image(insert(t, &digits)) | "failure")
show(t)
write("t[\"xyz\"] := \"new value\" --> ", image(t["xyz"] := "new value") |
"failure")
show(t)
write("insert(t, \"xyz\", \"def\") --> ", image(insert(t, "xyz", "def")) |
"failure")
show(t)
write("delete(t, \"xyz\") -- > ", image(delete(t, "xyz")) | "failure")
show(t)
write("delete(t, \"xyz\") -- > ", image(delete(t, "xyz")) | "failure")
show(t)
# test run-time error mechanism
&error := 1
runerr(101)
write("&errornumber=", &errornumber | "no value")
write("&errortext=", &errortext | "no value")
write("&errorvalue=", &errorvalue | "no value")
runerr(701,"abc")
end
# write word in hexadecimal
procedure word (v)
xd (v, 8)
writes (" ")
return
end
# write n low-order hex digits of v
procedure xd (v, n)
xd (ishift (v, -4), 0 < n - 1)
writes ("0123456789ABCDEF" [1 + iand (v, 16r0F)])
return
end
# ferr(func,val,err) -- call func(val) and verify that error "err" is produced
procedure ferr (func, val, err)
msg := "oops -- " || image(func) || "(" || image (val) || ") "
&error := 1
if func (val)
then write (msg, "succeeded")
else if &error ~= 0
then write (msg, "failed but no error")
else if &errornumber ~= err
then write (msg, "got error ",&errornumber," instead of ",err)
&error := 0
return
end
procedure p(a, b, c[])
write(" image(a):", image(a))
write(" image(b):", image(b))
write(" image(c):", image(c))
write(" every write(\"\\t\", !c):")
every write("\t", !c)
end
procedure q(a[])
write(" every write(\"\\t\", !a):")
every write("\t", !a)
end
procedure show(t)
local x
write(" *t --> ", *t)
write(" t[\"xyz\"] --> ", image(t["xyz"]) | "failure")
write(" member(t, \"xyz\") --> ", image(member(t, "xyz")) | "failure")
x := sort(t, 3)
write(" contents of t:")
while writes("\t", image(get(x)), " : ")
do write(image(get(x)))
write("")
end